#!/bin/bash
# ===========================================
# Git 配置设置脚本
# 自动配置项目的 Git 相关设置
# ===========================================

echo "🚀 开始配置 Git 设置..."

# 检查是否在 Git 仓库中
if ! git rev-parse --git-dir > /dev/null 2>&1; then
    echo "❌ 当前目录不是 Git 仓库"
    echo "请先运行: git init"
    exit 1
fi

# 设置提交消息模板
echo "📝 设置提交消息模板..."
git config commit.template .gitmessage

# 设置 Git Hooks 路径
echo "🔗 设置 Git Hooks..."
git config core.hooksPath .githooks

# 给 hooks 添加执行权限
if [ -f ".githooks/commit-msg" ]; then
    chmod +x .githooks/commit-msg
    echo "✅ commit-msg hook 已设置"
fi

# 设置换行符处理
echo "📄 配置换行符处理..."
git config core.autocrlf false
git config core.eol lf

# 设置默认编辑器（可选）
echo "✏️  配置默认编辑器..."
if command -v code > /dev/null; then
    git config core.editor "code --wait"
    echo "✅ 设置 VSCode 为默认编辑器"
elif command -v vim > /dev/null; then
    git config core.editor "vim"
    echo "✅ 设置 Vim 为默认编辑器"
fi

# 设置合并工具（可选）
if command -v code > /dev/null; then
    git config merge.tool vscode
    git config mergetool.vscode.cmd 'code --wait $MERGED'
    echo "✅ 设置 VSCode 为合并工具"
fi

# 设置别名
echo "🔧 设置 Git 别名..."
git config alias.st status
git config alias.co checkout
git config alias.br branch
git config alias.ci commit
git config alias.unstage 'reset HEAD --'
git config alias.last 'log -1 HEAD'
git config alias.visual '!gitk'
git config alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

# 设置推送默认行为
echo "📤 配置推送设置..."
git config push.default simple
git config push.followTags true

# 设置拉取默认行为
echo "📥 配置拉取设置..."
git config pull.rebase false

# 设置文件权限忽略（Windows）
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
    echo "🪟 配置 Windows 特定设置..."
    git config core.filemode false
    git config core.ignorecase false
fi

# 显示当前配置
echo ""
echo "🎉 Git 配置完成！"
echo ""
echo "📋 当前配置摘要:"
echo "  提交模板: $(git config commit.template)"
echo "  Hooks 路径: $(git config core.hooksPath)"
echo "  默认编辑器: $(git config core.editor)"
echo "  换行符处理: autocrlf=$(git config core.autocrlf), eol=$(git config core.eol)"
echo "  推送策略: $(git config push.default)"
echo ""

echo "💡 使用建议:"
echo "  - 使用 'git ci' 代替 'git commit'"
echo "  - 使用 'git st' 代替 'git status'"
echo "  - 使用 'git lg' 查看美化的提交历史"
echo "  - 提交消息将自动验证格式"
echo ""

echo "📚 提交消息格式:"
echo "  feat(scope): add new feature"
echo "  fix(scope): resolve bug issue"
echo "  docs(scope): update documentation"
echo ""

echo "✅ 设置完成！现在可以开始使用规范化的 Git 工作流了。" 